关于类协作安装程序注册入口函数调用不成功的问题,各位大哥帮忙看看。
我写了一个类协作安装程序,通过.inf注册后,查看注册表正常,系统目录下也copy了我的.dll文件。
在发现我注册的Class GUID的设备后,我的DLL文件也确实被初始化了。但我注册的协作安装入口函数
却每次都不会被调用。不知道是怎么回事,希望各位先达能指点一二。
我的程序如下:
///////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
MessageBox(NULL,"(_)","ggj",MB_OK);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
////////////////////入口函数
__declspec(dllexport) DWORD CALLBACK CoInstallEntryPoint(
IN DI_FUNCTION InstallFunction,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
IN OUT PCOINSTALLER_CONTEXT_DATA Context)
{
MessageBox(NULL,"调用成功","ggj",MB_OK);
return NO_ERROR;
}
注册后,每次安装注册的设备,都会显示"(_)"的提示框——表示DLL被初始化了。
但无论我怎么改函数的声明格式,"调用成功"的提示框一直都没出现过——说明我注册的类协作安装入口函数CoInstallEntryPoint
没有参与到设备驱动的安装过程中。